package com.lzy.cloud.base.controller;

import com.lzy.cloud.base.config.SysUserAdminConfig;
import com.lzy.cloud.base.constants.RedisPrefix;
import com.lzy.cloud.base.remote.UserApi;
import com.lzy.cloud.base.remote.dtos.RoleDto;
import com.lzy.cloud.base.remote.dtos.SysUserAdminDto;
import com.lzy.cloud.base.response.MemberToken;
import com.lzy.cloud.base.response.UserToken;
import com.lzy.framework.core.cache.cluster.RedisClusterService;
import com.lzy.framework.core.ensure.Ensure;
import com.lzy.framework.core.output.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;

@RestController
@RequestMapping(value = "/base")
@Slf4j
public class BaseController {

    @Autowired
    RedisClusterService redisClusterService;

    @Autowired
    private SysUserAdminConfig sysUserAdminConfig;

    @Autowired
    private UserApi userApi;

    /**
     * 方法说明：根据token获取用户角色列表
     * @date   2018/7/18 14:50
     */
    @RequestMapping(value = "/role/list/token",method = RequestMethod.GET)
    public List<RoleDto> selectRoleListByToken(@RequestHeader("token")String token) {
        Result userResult = userApi.userRoleList(token);
        List<RoleDto> roleDtoList = new ArrayList<>();
        if (userResult != null) {
            roleDtoList = (List<RoleDto>) userResult.getResult();
        }
        return roleDtoList;
    }

    /**
     * 方法说明：根据token获取用户对象
     * @date   2018/7/18 14:50
     */
    @RequestMapping(value = "/user/admin/token",method = RequestMethod.GET)
    public SysUserAdminDto selectUserByToken(@RequestHeader("token")String token) {
        SysUserAdminDto sysUserAdminDto = new SysUserAdminDto();
        Result userResult = userApi.selectUserByToken(token);
        if (userResult != null) {
            sysUserAdminDto = (SysUserAdminDto) userResult.getResult();
        }
        return sysUserAdminDto;
    }

    /**
     * 方法说明：根据token判断该用户是否拥有总平台角色类型
     * @date   2018/7/18 14:50
     */
    @RequestMapping(value = "/system/token",method = RequestMethod.GET)
    public Boolean isSystem(@RequestHeader("token")String token) {
        Result userResult = userApi.userRoleList(token);
        if (userResult != null) {
            List<RoleDto> roleDtoList = (List<RoleDto>) userResult.getResult();
            Boolean flag = Boolean.FALSE;
            for (RoleDto roleDto : roleDtoList) {
                if (roleDto.getType()!=null && roleDto.getType().toString().equals("1"))
                    flag = Boolean.TRUE;
            }
            return flag;
        }
        return Boolean.FALSE;
    }

    /**
     * 方法说明：根据token判断该用户是否拥有商家平台角色类型的运营角色
     * @date   2018/7/18 14:52
     */
    @RequestMapping(value = "/platform/token",method = RequestMethod.GET)
    public Long isPlatform(@RequestHeader("token")String token) {
        Result userResult = userApi.userRoleList(token);
        if (userResult != null) {
            List<RoleDto> roleDtoList = (List<RoleDto>) userResult.getResult();
            Long platformId = 0L;
            for (RoleDto roleDto : roleDtoList) {
                if (roleDto.getType()!=null && roleDto.getType().toString().equals("2")) {
                    if (roleDto.getMode()!=null && roleDto.getMode().toString().equals("1"))
                        platformId = roleDto.getPlatformId();
                }
            }
            return platformId;
        }
        return 0L;
    }

    /**
     * 方法说明：根据token判断该用户是否拥有商家平台角色类型的商家角色
     * @date   2018/7/18 14:53
     */
    @RequestMapping(value = "/shop/token",method = RequestMethod.GET)
    public Long isShop(@RequestHeader("token")String token) {
        Result userResult = userApi.userRoleList(token);
        if (userResult != null) {
            List<RoleDto> roleDtoList = (List<RoleDto>) userResult.getResult();
            Long platformId = 0L;
            for (RoleDto roleDto : roleDtoList) {
                if (roleDto.getType()!=null && roleDto.getType().toString().equals("2")) {
                    if (roleDto.getMode()!=null && roleDto.getMode().toString().equals("2"))
                        platformId = roleDto.getPlatformId();
                }
            }
            return platformId;
        }
        return 0L;
    }

    /**
     * 是否登录，用token获取MemberToken
     * @param token
     * @return
     */
    @RequestMapping(value = "/member/token",method = RequestMethod.GET)
    public Result isMemberLogin(@RequestHeader("token") String token) {
        Ensure.that(token).isNotBlank("00001024"); // 00001024=未登录,请登录
        MemberToken ut = redisClusterService.get("token:" + token, MemberToken.class);
        Ensure.that(ut == null).isFalse("00001033");// 00001033=请重新登录
        return new Result(ut);
    }

    /**
     * 是否登录，用token获取UserToken
     * @param token
     * @return
     */
    @RequestMapping(value = "/user/token",method = RequestMethod.GET)
    public Result isUserLogin(@RequestHeader("token") String token ) {
        UserToken userToken = redisClusterService.get(RedisPrefix.TOKEN + token, UserToken.class);
        if (userToken != null) {
            //向UserToken中添加数据
            redisClusterService.expire(RedisPrefix.TOKEN + token, sysUserAdminConfig.getTokenTimeout() * 60);
        }
        return new Result(userToken);
    }



//    public void storeSession(String key, Object value) {
//        SecurityUtils.getSubject().getSession().setAttribute(key, value);
//    }

//    /**
//     * 解析参数:
//     *
//     * @param request
//     **/
//    public Map<String, Object> getParams(HttpServletRequest request) {
//        Map<String, Object> params = new HashMap<>();
//        Map<String, String[]> oldParams = request.getParameterMap();
//        Iterator<Map.Entry<String, String[]>> entries = oldParams.entrySet().iterator();
//        while (entries.hasNext()) {
//            Map.Entry<String, String[]> entry = entries.next();
//            String keyName = entry.getKey();
//            // 将所有参数放入map中
//            if (entry.getValue()[0] != null && !entry.getValue()[0].equals("")) {
//                if ("begin".equals(keyName) || "rows".equals(keyName)) {
//                    params.put(keyName, Integer.valueOf(entry.getValue()[0]));
//                } else {
//                    params.put(keyName, entry.getValue()[0]);
//                }
//            }
//        }
//        params.put("deptId", UserUtil.getCurrentUser().getDeptId());
//        params.put("shopId", UserUtil.getCurrentUser().getShopId());
//        params.put("companyId", UserUtil.getCurrentUser().getCompanyId());
//        params.put("dataType", UserUtil.getCurrentUser().getDataType());
//        return params;
//    }
//
//    private String getKeyName(String oldKeyName) {
//        String[] oldKeyNames = oldKeyName.split("-");
//        return oldKeyName.replace(oldKeyNames[0] + "-", "").trim();
//    }
//
//    protected String getErrorMsg(BindingResult bindingResult) {
//        return bindingResult.getAllErrors().get(0).getDefaultMessage();
//    }
//
//    public SysUserAdminDto getCurrentUser() {
//        SysUserAdminDto admin = (SysUserAdminDto) SecurityUtils.getSubject().getSession()
//                .getAttribute(Constants.SYS_USER);
//        Ensure.that(admin).isNotNull("-1");
//        admin.setRoleIds(getLoginUserRoleIds());
//        admin.setRoleNames(getLoginUserRoleNames());
//        return admin;
//    }
//
//    public String[] getCurrentUserStr() {
//        SysUserAdminDto admin;
//        admin = (SysUserAdminDto) SecurityUtils.getSubject().getSession()
//                .getAttribute(Constants.SYS_USER);
//        Ensure.that(admin).isNotNull("-1");
//        String[] strString = new String[5];
//        strString[0] = admin.getId().toString();
//        strString[1] = admin.getLoginName();
//        strString[2] = admin.getRealName();
//        strString[3] = getLoginUserRoleIds();
//        strString[4] = getLoginUserRoleNames();
//        return strString;
//    }
//
//    public String getLoginUserName() {
//        SysUserAdminDto admin = (SysUserAdminDto) SecurityUtils.getSubject().getSession()
//                .getAttribute(Constants.SYS_USER);
//        Ensure.that(admin).isNotNull("-1");
//        return admin.getLoginName();
//    }
//
//    public ShopDto getLoginUserShop() {
//        ShopDto shopDto = (ShopDto) SecurityUtils.getSubject().getSession().getAttribute(Constants.BASE_SHOP);
//        Ensure.that(shopDto).isNotNull("-1");
//        return shopDto;
//    }
//
//    public String getLoginUserShopName() {
//        SysUserAdminDto admin = (SysUserAdminDto) SecurityUtils.getSubject().getSession()
//                .getAttribute(Constants.SYS_USER);
//        Ensure.that(admin).isNotNull("-1");
//        ShopDto dto = shopServiceApi.findShopById(admin.getShopId());
//        if (dto == null)
//            return admin.getLoginName();
//        else
//            return dto.getName();
//    }
//
//    public Long getLoginUserID() {
//        return UserUtil.getCurrentUser().getId();
//    }
//
//    public String getLoginUserPhone() {
//        return UserUtil.getCurrentUser().getPhone();
//    }
//
//    /**
//     * 取厂商id
//     */
//    public Long getShopId() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        return UserUtil.getCurrentUser().getShopId();
//    }
//
//    /**
//     * 获取当前商户操作的店铺id
//     */
//    public StoreDto getStoreIdAndName(BusinessType.ShopType shopType) {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        StoreDto storeDto = new StoreDto();
//        storeDto.setCategoryId(shopType.getCode());
//        storeDto.setShopId(UserUtil.getCurrentUser().getShopId());
//        storeDto = storeServiceApi.selectByShopIdAndCategoryId(storeDto);
//        Ensure.that(storeDto).isNotNull("00120004");
//        return storeDto;
//    }
//
//    /**
//     * 判断是否商家
//     */
//    public Long getShopId2() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        return UserUtil.getCurrentUser().getShopId() == 0 ? null : UserUtil.getCurrentUser().getShopId();
//    }
//
//    /**
//     * 判断是否商家：true 是
//     */
//    public Boolean isShop() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        return UserUtil.getCurrentUser().getShopId() != 0 ? true : false;
//    }
//
//    public String getLoginUserRoleIds() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        String roles = String.valueOf(SecurityUtils.getSubject().getSession().getAttribute(Constants.SYS_USER_ROLE));
//        return roles;
//    }
//
//    public String getLoginUserRoleNames() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        String roles;
//        roles = String.valueOf(SecurityUtils.getSubject().getSession().getAttribute(Constants.SYS_USER_ROLE));
//        Ensure.that(roles).isNotNull("-1");
//        String[] roleIds = roles.split(",");
//        String roleNames = "";
//        for (int i = 0; i < roleIds.length; i++) {
//            SysRoleDto sysRoleDto;
//            sysRoleDto = sysRoleServiceApi.selectById(Long.parseLong(roleIds[i]));
//            Ensure.that(sysRoleDto).isNotNull("-1");
//            if (i == 0) {
//                roleNames += sysRoleDto.getRlname();
//            } else {
//                roleNames += "," + sysRoleDto.getRlname();
//            }
//        }
//        return roleNames;
//    }
//
//    /**
//     * 判断当前用户是否为超管 或者平台管理员
//     *
//     * @return
//     */
//    public Boolean isAdmin() {
//        return getSysRoleTypes().contains(BusinessType.SysRoleType.SYS.getCode().toString()) || getSysRoleTypes().contains(BusinessType.SysRoleType.PLATFORM.getCode().toString());
//    }
//
//    /**
//     * 判断当前用户角色是否为商家旅游创客
//     *
//     * @return
//     */
//    public Boolean isTrip() {
//        if (getSysRoleTypes().contains(BusinessType.SysRoleType.SHOP.getCode().toString())) {
//            List<String> roleList = new ArrayList(Arrays.asList(getLoginUserRoleIds().split(",")));
//            return roleList.contains(String.valueOf(BusinessType.RoleType.TRIP.getCode()));
//        } else
//            return false;
//    }
//
//    /**
//     * 判断当前用户是否为 运营
//     *
//     * @return
//     */
//    public Boolean isBase() {
//        return getSysRoleTypes().contains(BusinessType.SysRoleType.OPERATION.getCode().toString());
//    }
//
//    /**
//     * 判断当前用户是否为 淳安公司
//     *
//     * @return
//     */
//    public Boolean isChunAn(){
//        return getSysRoleTypes().contains(BusinessType.SysRoleType.CHUNAN.getCode().toString());
//    }
//
//    public List<String> getSysRoleTypes() {
//        Ensure.that(UserUtil.getCurrentUser()).isNotNull("-1");
//        Object o = SecurityUtils.getSubject().getSession().getAttribute(Constants.SYS_USER_ROLE_TYPE);
//        Ensure.that(o).isNotNull("-1");
//        String roles = String.valueOf(o);
//        List<String> list = new ArrayList<>();
//        if (roles != null) {
//            list = Arrays.asList(roles.split(","));
//        }
//        return list;
//    }
//
//    /**
//     * 获取商城板块ID字符串
//     *
//     * @return
//     */
//    public String getModuleIds() {
//        StringBuffer roleIds = new StringBuffer();
//        List roleList = Arrays.asList(getLoginUserRoleIds().split(","));
////		if (roleList.contains(BusinessType.RoleType.CREATION.getCode()))
////			roleIds.append(String.valueOf(BusinessType.ShopType.CREATION.getCode())).append(",");
////		if (roleList.contains(BusinessType.RoleType.CREATIVE.getCode()))
////			roleIds.append(String.valueOf(BusinessType.ShopType.CREATIVE.getCode())).append(",");
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.OUT_DOOR.getCode())))
//            roleIds.append(String.valueOf(BusinessType.ShopType.OUT_DOOR.getCode())).append(",");
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.INTEGRAL.getCode())))
//            roleIds.append(String.valueOf(BusinessType.ShopType.INTEGRAL.getCode())).append(",");
//        return roleIds.length() > 1 ? roleIds.toString().substring(0, roleIds.length() - 1) : null;
//    }
//
//    /**
//     * 获取商城板块
//     *
//     * @return
//     */
//    public List<BusinessType.ShopType> getModule() {
//        List<BusinessType.ShopType> shops = new ArrayList<>();
//        List<String> roleList = new ArrayList(Arrays.asList(getLoginUserRoleIds().split(",")));
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATION.getCode()))) {
////			shops.add(BusinessType.Shop.CREATION);
//        }
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATIVE.getCode()))) {
////			shops.add(BusinessType.Shop.CREATIVE);
//        }
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.OUT_DOOR.getCode())))
//            shops.add(BusinessType.ShopType.OUT_DOOR);
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.INTEGRAL.getCode())))
//            shops.add(BusinessType.ShopType.INTEGRAL);
//        return shops;
//    }
//
//    /**
//     * 获取商城板块
//     *
//     * @return
//     */
//    public List<BusinessType.ShopType> getModule(Long code) {
//        List<BusinessType.ShopType> shops = new ArrayList<>();
//        if (code == null)
//            return shops;
////		if (BusinessType.ShopType.CREATION.getCode().equals(code))
////			shops.add(BusinessType.ShopType.CREATION);
////		if (BusinessType.ShopType.CREATIVE.getCode().equals(code))
////			shops.add(BusinessType.ShopType.CREATIVE);
//        if (BusinessType.ShopType.OUT_DOOR.getCode().equals(code))
//            shops.add(BusinessType.ShopType.OUT_DOOR);
//        if (BusinessType.ShopType.INTEGRAL.getCode().equals(code))
//            shops.add(BusinessType.ShopType.INTEGRAL);
//        return shops;
//    }
//
//    /**
//     * 获取商城板块
//     *
//     * @return
//     */
//    public String getOnlyModule() {
//        List<String> roleList = new ArrayList(Arrays.asList(getLoginUserRoleIds().split(",")));
//        StringBuffer sbf = new StringBuffer();
////		if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATION.getCode().toString())))
////			return BusinessType.ShopType.CREATION.getCode().intValue();
////		else if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATIVE.getCode().toString())))
////			return BusinessType.ShopType.CREATIVE.getCode().intValue();
////		else
//        /* 商家可能及时积分商城又是户外商家的商家   可能关联多个商家角色模块 允许多商品模块分类添加商品*/
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.OUT_DOOR.getCode().toString()))) {
//            sbf.append(BusinessType.ShopType.OUT_DOOR.getCode().toString());
//            sbf.append(",");
//        }
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.INTEGRAL.getCode().toString()))) {
//            sbf.append(BusinessType.ShopType.INTEGRAL.getCode().toString());
//            sbf.append(",");
//        }
//        if (sbf.length() > 0) {
//            return sbf.substring(0, sbf.length() - 1).toString();
//        }
//        return null;
//    }
//
//    /**
//     * 获取商城板块分类ID
//     *
//     * @return
//     */
//    public Integer getCategoryId() {
//        Long category = null;
//        List roleList = Arrays.asList(getLoginUserRoleIds().split(","));
////		if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATION.getCode())))
////			category = BusinessType.ShopType.CREATION.getCode();
////		if (roleList.contains(String.valueOf(BusinessType.RoleType.CREATIVE.getCode())))
////			category = BusinessType.ShopType.CREATIVE.getCode();
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.OUT_DOOR.getCode())))
//            category = BusinessType.ShopType.OUT_DOOR.getCode();
//        if (roleList.contains(String.valueOf(BusinessType.RoleType.INTEGRAL.getCode())))
//            category = BusinessType.ShopType.INTEGRAL.getCode();
//        return category == null ? null : category.intValue();
//    }
//
//    /**
//     * @Author:liyx
//     * @Description:发送验证码 41-后台注册  3-找回密码
//     * @Date:2017/8/8 9:44
//     */
//    public Boolean sendAuthInfo(String account, Integer type) {
//        Pattern p = Pattern.compile("^((15[0-9])|(18[0-9])|(17[0-9])|(13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
//        Matcher m = p.matcher(account);
//        if (!m.matches()) {
//            String nullObj = null;
//            Ensure.that(nullObj).isNotNull("00001029");
//        }
//        SendSmsDTO ssDTO = new SendSmsDTO();
//        ssDTO.setAuthTarget(account);
//        Integer typeValue = new Integer(1);
//        if (type.intValue() == 41) {
////			if(sysUserAdminServiceApi.selectByPhone(account)!=null){
////				String nullObj = null;
////				Ensure.that(nullObj).isNotNull("00001026");
////			}
//            typeValue = BusiTypeEnum.SYS_REGISTER_VERIFY.getVal();
//        } else if (type.intValue() == 3) {
//            typeValue = BusiTypeEnum.FIND_PWD_VERIFY.getVal();
//        }
//        ssDTO.setAuthType(typeValue);
//        ssDTO.setWay(com.lzy.sms.constants.CommonConstants.MediaWay.PHONE);
//        Boolean bool = msgCodeApi.sendCode(ssDTO, null);
//        return bool;
//    }
//
//    /**
//     * @Author:liyx
//     * @Description:校验验证码
//     * @Date:2017/8/8 9:44
//     */
//    public boolean verifyAuthInfo(String account, String code, Integer type) {
//        CodeDTO codeDTO = new CodeDTO();
//        codeDTO.setAuthTarget(account);
//        Integer typeValue = new Integer(1);
//        if (type.intValue() == 41) {
//            typeValue = BusiTypeEnum.SYS_REGISTER_VERIFY.getVal();
//        } else if (type.intValue() == 3) {
//            typeValue = BusiTypeEnum.FIND_PWD_VERIFY.getVal();
//        }
//        codeDTO.setAuthType(typeValue);
//        codeDTO.setWay(com.lzy.sms.constants.CommonConstants.MediaWay.PHONE);
//        codeDTO.setAuthCode(code);
//        Boolean bool = msgCodeApi.verifyAuthInfo(codeDTO);
//        return bool;
//    }
//
//    @RequestMapping(value = "/refresh/token", method = RequestMethod.GET)
//    @ResponseBody
//    public Result getToken() {
//        Object token = SecurityUtils.getSubject().getSession().getAttribute("token");
//        return token == null ? new Result() : new Result(token);
//    }
//
//    /**
//     * 导出Excel文件
//     *
//     * @param request
//     * @param response
//     * @param cellTitleList 标题
//     * @param data          数据
//     * @param fileRealName  文件名
//     * @return 下载
//     */
//    public ModelAndView exportExcel(HttpServletRequest request, HttpServletResponse response,
//                                    List<String> cellTitleList, List<List<String>> data, String fileRealName) {
//
//        String realpath = request.getSession().getServletContext().getRealPath("/");
//        if (!(realpath.endsWith("/") || realpath.endsWith("\\"))) {
//            realpath += File.separator;
//        }
//
//        // 路径格式 download/excel/yyyyMM/***.xlsx
//        realpath += ("download" + File.separator + "excel" + File.separator + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMM")) + File.separator);
//
//        // 如果目录不存在，则创建目录
//        File dirFile = new File(realpath);
//        if (!dirFile.exists() || !dirFile.isDirectory()) {
//            dirFile.mkdirs();
//        }
//
//        String excelFileName = System.currentTimeMillis() + ".xlsx";
//        if (StringUtils.isBlank(fileRealName)) {
//            fileRealName = excelFileName;
//        }
//        realpath += excelFileName;
//
//        // 创建Excel
//        Workbook wb = new org.apache.poi.xssf.usermodel.XSSFWorkbook();
//        Sheet sheet = wb.createSheet("导出");
//
//        CellStyle style = wb.createCellStyle();
//        //设置边框样式
//        style.setBorderTop(BorderStyle.THIN);
//        style.setBorderBottom(BorderStyle.THIN);
//        style.setBorderLeft(BorderStyle.THIN);
//        style.setBorderRight(BorderStyle.THIN);
//        //设置边框颜色
//        style.setTopBorderColor(HSSFColor.BLACK.index);
//        style.setBottomBorderColor(HSSFColor.BLACK.index);
//        style.setLeftBorderColor(HSSFColor.BLACK.index);
//        style.setRightBorderColor(HSSFColor.BLACK.index);
//        // 垂直居中
//        style.setVerticalAlignment(VerticalAlignment.CENTER);
//
//        Font font = wb.createFont();
//        font.setBold(true);
//        CellStyle styleHeader = wb.createCellStyle();
//        styleHeader.cloneStyleFrom(style);
//        styleHeader.setBorderBottom(BorderStyle.MEDIUM);
//        styleHeader.setFont(font);
//        // 左右居中
//        styleHeader.setAlignment(HorizontalAlignment.CENTER);
//
//        CellStyle styleHeader2 = wb.createCellStyle();
//        styleHeader2.cloneStyleFrom(styleHeader);
//        styleHeader2.setBorderBottom(BorderStyle.THIN);
//
//        // 行高
//        short rowHeight = 400;
//        // 设置列宽
//        int maxCellNum = cellTitleList.size();
//        for (int i = 0; i < maxCellNum; i++) {
//            sheet.setColumnWidth(i, 6000);
//        }
//
//        // 第一行 设置标题
//        Row row = sheet.createRow(0);
//        row.setHeight(rowHeight);
//        for (int i = 0; i < maxCellNum; i++) {
//            Cell cell;
//            cell = row.createCell(i);
//            cell.setCellStyle(styleHeader);
//            cell.setCellValue(cellTitleList.get(i));
//        }
//
//        if (null != data && data.size() > 0) {
//            int i = 1;
//            Cell cell;
//            for (List<String> rowData : data) {
//                row = sheet.createRow(i);
//                row.setHeight(rowHeight);
//                int rowDataSize = rowData.size();
//
//                for (int j = 0; j < maxCellNum; j++) {
//                    cell = row.createCell(j);
//                    cell.setCellStyle(style);
//                    if (j >= rowDataSize) {
//                        cell.setCellValue("");
//                    } else {
//                        cell.setCellValue(rowData.get(j));
//                    }
//                }
//                i++;
//            }
//        }
//
//        // 创建文件
//        try (FileOutputStream out = new FileOutputStream(realpath)) {
//            wb.write(out);
//            out.flush();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//
//        return downloadFile(request, response, realpath, fileRealName);
//    }
//
//    /**
//     * 文件下载
//     *
//     * @param request
//     * @param response
//     * @param filePath     文件物理路径
//     * @param fileRealName 文件真实名字
//     * @return
//     */
//    public ModelAndView downloadFile(HttpServletRequest request, HttpServletResponse response, String filePath, String fileRealName) {
//        if (StringUtils.isBlank(filePath) || !(new File(filePath)).exists()) {
//            try (PrintWriter out = response.getWriter()) {
//                out.println("文件【" + filePath + "】不存在");
//                out.flush();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//            return null;
//        }
//
//        BufferedInputStream bis = null;
//        BufferedOutputStream bos = null;
//        try {
//            response.setContentType("text/html;charset=UTF-8");
//            request.setCharacterEncoding("UTF-8");
//
//            // 获取文件名
//            File file = new File(filePath);
//            if (StringUtils.isBlank(fileRealName)) {
//                fileRealName = file.getName();
//            }
//            long fileLength = file.length();
//
//            response.setContentType("application/octet-stream");
//            response.setHeader("Content-disposition", "attachment; filename=" + new String(fileRealName.getBytes("gb2312"), "ISO8859-1"));
//            response.setHeader("Content-Length", String.valueOf(fileLength));
//
//            bis = new BufferedInputStream(new FileInputStream(filePath));
//            bos = new BufferedOutputStream(response.getOutputStream());
//
//            byte[] buff = new byte[1024 * 100];
//            int bytesRead;
//            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
//                bos.write(buff, 0, bytesRead);
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        } finally {
//            try {
//                if (null != bis) {
//                    bis.close();
//                }
//                if (null != bos) {
//                    bos.close();
//                }
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//        }
//        return null;
//    }
//
//    /**
//     * 参数处理
//     *
//     * @param categoryDtoList
//     * @param model
//     */
//    public void paramSet(List<ItemCategoryDto> categoryDtoList, Model model) {
//        categoryDtoList.forEach(categoryDto -> {
//            if (categoryDto.getLevel() == 1) {
//                model.addAttribute("top", categoryDto);
//            }
//            if (categoryDto.getLevel() == 2) {
//                model.addAttribute("sec", categoryDto);
//            }
//            if (categoryDto.getLevel() == 3) {
//                model.addAttribute("third", categoryDto);
//            }
//            if (categoryDto.getLevel() == 4) {
//                model.addAttribute("four", categoryDto);
//            }
//        });
//    }

}
